package Supermarket;

import java.awt.Window;
import javax.swing.JOptionPane;

/**
 *
 * @author bagi
 */
public class AppMessages {
        //μηνύματα προς τον χρήστη
    public final static String FieldsMissingMsg = "Yποχρεωτικά πεδία (*).";
    public final static String BadCvvMsg = " Λάθος μορφή CVV.";
    public final static String BadCardNumberMsg = " Λάθος μορφή αριθμού κάρτας.";
    public final static String CustomerExistsMsg = "Ο Πελάτης υπάρχει ήδη στη ΒΔ";
    public final static String StoredInDBMsg ="Αποθηκεύτηκε στη βάση δεδομένων";
    public final static String DBFailureMsg = "Αποτυχία αποθήκευσης στη ΒΔ";
    public final static String DBMsg = "Μύνημα ΒΔ";
    public final static String DialogTitleMsg = "ΠΡΟΣΟΧΗ";
    public final static String ConfirmTitleMsg = "Επιβεβαίωση ενέργειας";
    public final static String NumberEntryOnlyMsg="Επιτρέπεται μόνο η καταχώρηση αριθμών!";
    public final static String FalseEntryMsg="Λανθασμένη καταχώρηση";
    private final static String SuccessfullChangePswDBMsg ="Επιτυχής αλλαγή κωδικού πρόσβασης";
    private final static String LoginMsg = "Τα στοιχεία εισόδου είναι λανθασμένα!";
    private final static String DataExistsMsg = "Τα δεδομένα υπάρχουν ήδη στη ΒΔ";
    private final static String SuccessUpdateDBMsg ="Επιτυχής ενημέρωση της βάσης δεδομένων";
    private final static String ConfirmationMsg = "Να ενημερωθεί η βάση δεδομένων;";
    private final static String SelectionMsg = "Απαιτείται η επιλογή εγγραφής από το πίνακα";
    private final static String StoreExistsMsg = "Το κατάστημα υπάρχει ήδη στη ΒΔ";
    private final static String DeleteDataMsg = "Να γίνει η διαγραφή;";
    private final static String ForeignKeyErrorMsg = "Δεν μπορεί να γίνει η διαγραφή (Παραβίαση ξένου κλειδιού)";
    private final static String IsNotAcceptedMsg = "Επιτρέπεται η επιλογή μόνο ενεργών επιταγών";
    private final static String IsNotPermittedMsg = "Αξία συναλλαγών κάτω από 6€. "
            + "Δεν επιτρέπεται η επιλογή επιταγών.";
    private final static String MaxChecksSelectedMsg = "Δεν επιτρέπεται η επιλογή άλλων επιταγών."; 
    private final static String CreditCardNotFoundMsg = "Η Αρχή Πιστοποίησης Καρτών απέρριψε την κάρτα σας.";
    private final static String CreditCardNSuccessMsg = "Η συναλλαγή εκρίθηκε από την Αρχή Πιστοποίησης Καρτών.";
    private final static String purchaseCanceledMsg =
            "Έχετε κάνει 3 αποτυχημένες προσπάθειες. Η συναλλαγή ακυρώθηκε";
    private final static String NoProductsInDB = "Δεν υπάρχουν διαθέσιμα προϊόντα στην ΒΔ. Προσθέστε πρώτα μερικά";
    private final static String CustomerCanceledMsg = "Η συναλλαγή ακυρώθηκε από τον χρήστη.";
    private final static String XMLCreationMessage = "Η Έξοδος σε XML πραγματοποιήθηκε στο αρχείο ..\\purchases.xml";
    
    
    
    //μήνυμα λανθασμένων στοιχείων εισόδου user (για διαδικασία Login και ChangePassword
    public static void ErrorLoginMessage (Window parent){
        JOptionPane.showMessageDialog(parent, LoginMsg, DialogTitleMsg,
                JOptionPane.WARNING_MESSAGE);
    }
    
     //μήνυμα λάθους ΒΔ - κενό αρχείο προϊόντων
    public static void ErrorNoProductsMessage (Window parent){
        JOptionPane.showMessageDialog(parent, NoProductsInDB, DialogTitleMsg,
                JOptionPane.ERROR_MESSAGE);
    }
    
    //μήνυμα μη αποδεκτής επιλογής επιταγής
    public static void ActionNotPermittedMessage(Window parent) {
                JOptionPane.showMessageDialog(parent, 
                    IsNotPermittedMsg, DialogTitleMsg , JOptionPane.WARNING_MESSAGE);
    }
    
    //μήνυμα επιτυχούς αλλαγής κωδικού πρόσβασης
    public static void SuccessChangePswMessage(Window parent) {
        JOptionPane.showMessageDialog(parent, SuccessfullChangePswDBMsg, DBMsg, 
                JOptionPane.INFORMATION_MESSAGE);
    }
    
    //μήνυμα επιτυχίας ΒΔ
    public static void SuccessMessage(Window parent) {
        JOptionPane.showMessageDialog(parent, StoredInDBMsg, DBMsg , 
                JOptionPane.INFORMATION_MESSAGE);
    }
    
    //μήνυμα αποτυχίας ΒΔ
    public static void FailureMessage(Window parent, Exception e) {
                JOptionPane.showMessageDialog(parent, DBFailureMsg + "\n" + e.getMessage(), 
                        DBMsg , JOptionPane.ERROR_MESSAGE);
    }
    
    //μήνυμα ύπαρξης καταστήματος
    public static void StoreExistsMessage(Window parent) {
                JOptionPane.showMessageDialog(parent, 
                    StoreExistsMsg, DBMsg , JOptionPane.ERROR_MESSAGE);
    }
    
    //μήνυμα επιβεβαίωσης πραγματοποίησης τροποποιήσεων στη ΒΔ
    public static int ConfirmationMessage(Window parent) {
        int choiceConfirm=JOptionPane.showConfirmDialog(parent, ConfirmationMsg, 
                ConfirmTitleMsg, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        return choiceConfirm;
    }
    
     //μήνυμα προτροπής επιλογής εγγραφής από πίνακα
    public static void SelectionMessage(Window parent) {
        JOptionPane.showMessageDialog(parent,SelectionMsg, DialogTitleMsg,
                JOptionPane.WARNING_MESSAGE);
    }
    
    //μήνυμα ύπαρξης των δεδομένων στη ΒΔ
    public static void DataExistsMessage(Window parent) {
                JOptionPane.showMessageDialog(parent, 
                    DataExistsMsg, DBMsg , JOptionPane.ERROR_MESSAGE);
    }
    
    //μήνυμα αδυναμίας διαγραφής από τη ΒΔ
    public static void CannotDeleteMessage(Window parent) {
                JOptionPane.showMessageDialog(parent, 
                    ForeignKeyErrorMsg, DBMsg , JOptionPane.ERROR_MESSAGE);
    }
    
     //μήνυμα επιβεβαίωσης διαγραφής από τη ΒΔ
    public static int DeleteDataConfirmationMessage(Window parent) {
        int choiceConfirm = JOptionPane.showConfirmDialog(parent, DeleteDataMsg, 
                ConfirmTitleMsg, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        return choiceConfirm;
    }
    
    public static void CreditCardNotFoundMessage(Window parent){
        JOptionPane.showMessageDialog(parent, 
                    CreditCardNotFoundMsg, DBMsg , JOptionPane.ERROR_MESSAGE); 
    }
    
    //ακύρωση συναλλαγής
    public static void purchaseCanceledMessage(Window parent){
        JOptionPane.showMessageDialog(parent, 
                    purchaseCanceledMsg, DBMsg , JOptionPane.ERROR_MESSAGE); 
    }
    
    public static void CreditCardSuccessMessage (Window parent){
        JOptionPane.showMessageDialog(parent, 
                    CreditCardNSuccessMsg, DBMsg , JOptionPane.INFORMATION_MESSAGE );
    }

    //η μέθοδος ελέγχει έαν το στοιχείο που καταχωρείται είναι αριθμός
    public static boolean NumberEntryOnly(Window parent, String s) {
        try {
            Float.parseFloat(s);
            return true;
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(parent, NumberEntryOnlyMsg, FalseEntryMsg , 
                JOptionPane.INFORMATION_MESSAGE);
            return false; 
        }
    }
    
    //μήνυμα μη αποδεκτής επιλογής επιταγής
    public static void ActionNotAcceptedMessage(Window parent) {
                JOptionPane.showMessageDialog(parent, 
                    IsNotAcceptedMsg, DialogTitleMsg , JOptionPane.WARNING_MESSAGE);
    }

    
    //μήνυμα ένημέρωσης πελάτη για χρήση επιτρεπόμενου πλήθους επιταγών
    public static void MaxChecksSelectionMessage(Window parent) {
                JOptionPane.showMessageDialog(parent, 
                    MaxChecksSelectedMsg, DialogTitleMsg , JOptionPane.WARNING_MESSAGE);
    }
    
      //μήνυμα λάθους ΒΔ - κενό αρχείο προϊόντων
    public static void CustomerCanceledMessage (Window parent){
        JOptionPane.showMessageDialog(parent, CustomerCanceledMsg, DBMsg,
                JOptionPane.ERROR_MESSAGE);
    }
    
    public static void XMLFileCreated (Window parent){
        JOptionPane.showMessageDialog(parent, 
                    XMLCreationMessage, DBMsg , JOptionPane.INFORMATION_MESSAGE );
    }
    
}
